<?php
	require_once($_SERVER["DOCUMENT_ROOT"] .'Teste/Utils/DbConnection.class.php');
	require_once($_SERVER["DOCUMENT_ROOT"] .'Teste/Entities/Usuario.class.php');

	class UsuarioDALC{		
		private static $instance;

		// O método singleton 
	    static public function singleton() 
	    {
	        if (!isset(self::$instance)) {
	            $c = __CLASS__;
	            self::$instance = new $c;
	        }

	        return self::$instance;
	    }		

		public function logar($oUsuario){		
			try{
				$query = "SELECT * FROM tbusuarios WHERE email = ? AND senha = ?;";

				$result = DbConnection::prepareStmt($query);

				$result->bindValue(1, $oUsuario->getEmail(), PDO::PARAM_STR);
				$result->bindValue(2, $oUsuario->getSenha(), PDO::PARAM_STR);
							
				$result->execute();

				if($result->rowCount() > 0){
					$dados = $result->fetch(PDO::FETCH_OBJ);
					$oUsuario = new Usuario($dados->email, $dados->senha);
					$oUsuario->setNome($dados->nome);
					$oUsuario->setId($dados->id);
					$oUsuario->setDescricao($dados->descricao);
					$oUsuario->setTipo($dados->tipo);
					$oUsuario->setStatus($dados->status);
					
					return $oUsuario;
				}else{

					return null;
				}
			}catch(Exception $e){
				return null;
			}

		}

		public function cadastrar($oUsuario){		
			/*
			$result = DbConnection::prepareStmt("SET NAMES utf8");
			$result->execute();
			*/
			try{
				$query = "INSERT INTO tbusuarios(nome,email,senha,descricao,tipo,status) VALUES(?,?,?,?,?,?);";

				$result = DbConnection::prepareStmt($query);					

				$result->bindValue(1, $oUsuario->getNome(), PDO::PARAM_STR);
				$result->bindValue(2, $oUsuario->getEmail(), PDO::PARAM_STR);
				$result->bindValue(3, $oUsuario->getSenha(), PDO::PARAM_STR);
				$result->bindValue(4, $oUsuario->getDescricao(), PDO::PARAM_STR);
				$result->bindValue(5, $oUsuario->getTipo(), PDO::PARAM_INT);
				$result->bindValue(6, $oUsuario->getStatus(), PDO::PARAM_INT);
							
				$result->execute();
			}catch(Exception $e){
				echo $e;
			}


		}		

	}
?>